home *** CD-ROM | disk | FTP | other *** search
/ Eyewitness Photo Gallery 4: Children / Eyewitness Photo Gallery - Volume 4 - Children.iso / pc / dksetup / dkgen.inc < prev    next >
Text File  |  1996-05-14  |  33KB  |  859 lines

  1. '^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  2. '
  3. '   DKGEN.INC
  4. '
  5. '^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  6. ' See the change history in DKSETUP.MST for more recent changes.
  7. '
  8. '27/02/96 Added the InstallQTW function.
  9. '25/01/96 Change the EndCommonInstall and HandleRestart SUB's to Functions to
  10. '         utilise return values. So the user does NOT get the 'You must restart
  11. '         windows' warning AND THEN the 'Successful install' dialog box.
  12. '25/01/96 Change path checking to look for Max of 8 chars first.
  13. '08/08/95 Test for Norton Anti Virus
  14. '03/08/95 const for uninstall and min register added
  15. '07/07/95 Correct so unregisters use of ctl3d
  16. '01/06/95 No choice about adding icons to progman
  17. '?/05/95  If bundle with sampler need to test for cirrus driver - put into mst file
  18. '12/03/95 Alternative function added, readme icon has shortened name
  19.  
  20. '$INCLUDE 'setupapi.inc'
  21. '$INCLUDE 'msdetect.inc'
  22. '$INCLUDE 'dklang.inc'
  23.  
  24. '   Defines unlikely to change
  25. CONST APPLICATION_MENU_FILE     = "custmenu.exe"
  26. CONST INI_FILE_SOURCE = "AppPath" ' OR  "WinPath"
  27. CONST EDITOR_EXE        = "write.exe "
  28. CONST SAMPLER_PATH      = "SAMP"
  29. CONST SAMPLER_EXE_FILE  = "sampler.exe"
  30. CONST SAMPLER_INI_FILE  = "sampler.ini"
  31. CONST SAMPLER_BINARIES_SECTION_NAME = "SAMPBIN"
  32. CONST SAMPLER_README_FILE = "SREADME.WRI"
  33.  
  34. CONST SOURCE_BINARIES_SUBDIR = "DKCODE"
  35. CONST SOURCE_SETUP_SUBDIR = "DKSETUP"
  36. CONST SETUP_INF_FILENAME = "SETUP.INF"
  37. CONST CUIDLL_FILENAME = "mscuistf.dll"
  38. CONST SETUP_INI_BINARIES_SECTION_NAME = "BIN"
  39. CONST SETUP_INI_SH_BINARIES_SECTION_NAME = "BIN Shared"
  40. CONST SETUP_INI_WING_BINARIES_NAME = "WinG Runtime"
  41. CONST SETUP_INI_WING32_BINARIES_NAME = "WinG32"
  42. CONST SETUP_INI_ACM_SECTION_NAME = "ACM Drivers"
  43. CONST SETUP_INI_FONTS_SECTION_NAME = "Fonts"
  44.  
  45. 'unin, min register
  46. CONST UNINSTALL_EXE_FILE = "UNINSTAL.exe"
  47. CONST DKREG_INI_DIR = "\MMAPP"
  48. CONST DKREG_INI_PATH = "\MMAPP\MMAPP.ini"
  49. CONST WIN_INI_ENTRY = "path"
  50.  
  51. CONST PRODUCT_INI_DIR_SECTION_NAME = "Directory"
  52. CONST PRODUCT_INI_DIR_ENTRY_NAME = "Data"
  53.  
  54. CONST MINIMUM_DISK_SPACE = 2048 ' For Minimum install
  55.  
  56. ' Procs
  57. CONST PROC_HELP = "FHelpDlgProc"
  58.  
  59. DECLARE FUNCTION ExitWindowsExec LIB "USER.EXE" (szEXE$, szParams$) AS INTEGER
  60. DECLARE FUNCTION GetActiveWindow    lib "User" () as integer
  61. DECLARE FUNCTION SetWindowPos       lib "User" (hwnd as integer, hwnd as integer, i as integer, i as integer, i as integer, i as integer, w as integer) as integer
  62.  
  63. DECLARE FUNCTION Ctl3dRegister LIB "CTL3D.DLL" (hInst%) AS INTEGER
  64. DECLARE FUNCTION Ctl3dUnregister LIB "CTL3D.DLL" (hInst%) AS INTEGER
  65. DECLARE FUNCTION Ctl3dAutoSubClass LIB "CTL3D.DLL" (hInst%) AS INTEGER
  66.  
  67. DECLARE FUNCTION OnWin3x LIB "setuphlp.DLL" AS INTEGER
  68. DECLARE FUNCTION VflatdPresent LIB "setuphlp.DLL" AS INTEGER
  69. DECLARE FUNCTION GetRealSystemDir LIB "setuphlp.DLL" (szDir$,cbBuf%) AS INTEGER
  70. DECLARE FUNCTION RestartWindows LIB "setuphlp.DLL" AS INTEGER
  71. DECLARE FUNCTION IsWin32FileNewer LIB "setuphlp.DLL" (szOrig$,szNew$) AS INTEGER
  72. DECLARE SUB RenameFilePlease LIB "setuphlp.DLL" (szOrig$,szNew$)
  73.  
  74. DECLARE FUNCTION FIsVGA LIB "mscuistf.dll" AS INTEGER
  75. DECLARE FUNCTION FIs256Colour LIB "mscuistf.dll" AS INTEGER
  76. DECLARE FUNCTION Welcome() AS INTEGER
  77. DECLARE FUNCTION TestSystem() AS INTEGER
  78. DECLARE FUNCTION GetDiskSpaceNeeded(drive%) AS LONG
  79. DECLARE SUB Initialise(prodName$, defInstallPath$, msgCaption$)
  80. DECLARE SUB DeInitialise()
  81. DECLARE SUB AskQuit()
  82. DECLARE SUB BadPath()
  83. DECLARE SUB NetworkDrive()
  84. DECLARE SUB UpdateIndeoAVIDrivers()
  85. DECLARE SUB UpdateWinGDrivers()
  86. 'DECLARE SUB UpdateProgramManager(prodName$, appExeFile$, appPengeFile$, readmeFile$, readmeStr$, onCDROM%)
  87. 'DECLARE SUB UpdateProgramManagerAlt(prodName$, readmeName$, appExeFile$, appPengeFile$, readmeFile$, readmeStr$, onCDROM%)
  88. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  89. DECLARE FUNCTION GetRealWindowsSysDir AS STRING
  90. DECLARE SUB UpdateWinG32 (szOrig$)
  91. DECLARE SUB InitCommonInstall()
  92. DECLARE FUNCTION LicenseAgreement() AS INTEGER
  93. DECLARE FUNCTION Win32sRequiredDLG() AS INTEGER
  94. DECLARE FUNCTION UpdateADPCMDrivers() AS INTEGER
  95. DECLARE FUNCTION EndCommonInstall( AppReadmeFile$, InRoot%, szEditorExe$ ) AS INTEGER
  96. DECLARE FUNCTION HandleRestart() AS INTEGER
  97. DECLARE FUNCTION InstallQTW() As Integer
  98.  
  99. '  SetWindowPos() flags
  100. const SWP_NOSIZE         = &H0001
  101. const SWP_NOMOVE         = &H0002
  102. const SWP_NOACTIVATE     = &H0010
  103. const SWP_SHOWWINDOW     = &H0040
  104. const SWP_HIDEWINDOW     = &H0080
  105. const HWND_TOP       = (0)
  106. const HWND_BOTTOM    = (1)
  107. const HWND_TOPMOST   = (-1)
  108. const HWND_NOTOPMOST = (-2)
  109.  
  110.  
  111. 'Dialog Box ID's
  112. CONST DLG_ABORT                       =100
  113. CONST DLG_ADDSYSTEMSOFT               =101
  114. CONST DLG_ADPCMHELP                   =102
  115. CONST DLG_AWFULMACHINE                =103
  116. CONST DLG_BADEXIT                     =110
  117. CONST DLG_BADVGA                      =111
  118. CONST DLG_BADPATH                     =112
  119. CONST DLG_BILLBOARD                   =113
  120. CONST DLG_CUSTOM                      =120
  121. CONST DLG_CUSTOMHELP                  =121
  122. CONST DLG_DESTPATH                    =130
  123. CONST DLG_DONEVIDEO                   =131
  124. CONST DLG_DONENOVIDEO                 =132
  125. CONST DLG_EXITFAILNOTENH              =140
  126. CONST DLG_EXITFAILNOTINTEL            =141
  127. CONST DLG_EXITFAILNOTWIN31            =142
  128. CONST DLG_EXITFAILRUNAPP              =143
  129. CONST DLG_FREECELLINST                =150
  130. CONST DLG_INSTALLQTW                  =180
  131. CONST DLG_LICENSE                     =210
  132. CONST DLG_MAILMAN                     =220
  133. CONST DLG_NOSPACE                     =230
  134. CONST DLG_NEEDS31                     =231
  135. CONST DLG_NOMOUSE                     =232
  136. CONST DLG_NOT256                      =233
  137. CONST DLG_NOSYSSOFT                   =234
  138. CONST DLG_NODISKSPACE                 =235
  139. CONST DLG_NEEDSWIN32S                 =236
  140. CONST DLG_NETWORKDRIVE                =237
  141. CONST DLG_PATHHELP                    =240
  142. CONST DLG_POORMACHINE                 =241
  143. CONST DLG_PROGMANGROUP                =242
  144. CONST DLG_PROGMANGRP                  =243
  145. CONST DLG_QUIT                        =250
  146. CONST DLG_SPEED                       =270
  147. CONST DLG_SUCCESS                     =271
  148. CONST DLG_URKADPCM                    =290
  149. CONST DLG_WELCOME                     =310
  150. CONST DLG_WELHELP                     =311
  151. CONST DLG_WRONGADPCM                  =312
  152. CONST DLG_WHIZZHELP                   =313
  153. 'Bitmap ID
  154. CONST IDB_BITMAP                      =1000
  155.  
  156. ' Error messages
  157. CONST ERR_OK = 100
  158. CONST ERR_EXITFAIL = 101
  159. CONST ERR_WINVERFAIL = 102
  160. CONST ERR_NODISKSPACE = 103
  161.  
  162. ' Navigation messages
  163. CONST NAV_FORWARD = 0
  164. CONST NAV_BACK = 1
  165. CONST NAV_EXIT = 2
  166. CONST NAV_RUN = 3
  167.  
  168.  
  169. GLOBAL szWinPath As String
  170. GLOBAL szWinSysPath As String
  171. GLOBAL szWinDrive As String
  172. GLOBAL szSrcSetupPath As String
  173. GLOBAL szSrcBinPath As String
  174. GLOBAL szDestPath As String
  175. GLOBAL szOldDestPath As String
  176. GLOBAL szPengePath As String
  177. GLOBAL szINFPath As String
  178. GLOBAL szAppINIPath As String
  179. GLOBAL szMsgCaption As String
  180. GLOBAL szButton As String
  181. GLOBAL szMinimalInstall As String
  182. GLOBAL szAddPMItem As String
  183. GLOBAL szExpressCustomChoice As String
  184. GLOBAL szMMappPath As String
  185. GLOBAL szInstExePath As String
  186. GLOBAL szInstExeDate As String
  187. GLOBAL szCdExePath As String
  188. GLOBAL szCdExeDate As String
  189. GLOBAL szCopyright As String
  190. GLOBAL szFullSampPath As String
  191. GLOBAL szSampINIPath As String
  192. GLOBAL szSampData As String
  193. GLOBAL szSampVersion As String
  194. GLOBAL szMsacmPriority1 As String
  195. GLOBAL szMsacmPriority2 As String
  196. GLOBAL szMsacmPriority3 As String
  197. GLOBAL bInstalledWin32s As Integer
  198. GLOBAL APPLICATION_INI_FILE As String
  199. GLOBAL APPLICATION_EXE_FILE As String
  200. GLOBAL APPLICATION_PENGE_FILE As String
  201. GLOBAL szDKRegIni As String ' MMAPP.INI
  202.  
  203. GLOBAL fPreviousMode As Integer
  204. GLOBAL fWillNotFit As Integer
  205. GLOBAL fSystemUpdated As Integer
  206. GLOBAL hDlg As Integer
  207. GLOBAL dButton As Integer
  208. GLOBAL dWinDrive As Integer
  209. GLOBAL dDestDrive As Integer
  210. GLOBAL dCursor As Integer
  211. GLOBAL hwndSetup As Integer
  212.  
  213. ' This file needs the above globals etc for it's functions
  214. '$INCLUDE 'product.inc' 'Defines which change for every product
  215.  
  216. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  217. Sub InitCommonInstall() STATIC
  218.     AddToBillboardList CUIDLL_FILENAME, DLG_MAILMAN, "MailmanDlgProc", 2500
  219.     SetCopyGaugePosition -1, 150
  220. End Sub
  221.  
  222.  
  223. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  224. Function EndCommonInstall( AppReadmeFile$, InRoot%, szEditorExe$ ) STATIC AS INTEGER
  225.  
  226.     if RestartListEmpty = 0 or fSystemUpdated = 1 or bInstalledWin32s = 1 then
  227.         hDlg = DLG_DONEVIDEO
  228.     else
  229.         hDlg = DLG_DONENOVIDEO
  230.     end if
  231.  
  232. QuitLoop:
  233.     szButton = UIStartDlg(CUIDLL_FILENAME, hDlg, "FInfoDlgProc", 0, "")
  234.     select case szButton
  235.     case "REACTIVATE"
  236.         goto QuitLoop
  237.     case "CONTINUE"     'Read me
  238.         if inRoot% = 1 then
  239.             szReadMe$ = MakePath( mid$(szSrcSetupPath, 1, (len(szSrcSetupPath) - len(SOURCE_SETUP_SUBDIR))-1), appReadmeFile$)
  240.         else
  241.             szReadMe$ = MakePath(szSrcBinPath, appReadmeFile$)
  242.         end if
  243.         if szEditorExe$ = "write.exe " then
  244.             run szEditorExe$ + szReadMe$, nowait
  245.         else
  246.             run szEditorExe$ + szReadMe$
  247.         end if
  248.         goto QuitLoop
  249.     case "BACK"     'Restart Windows
  250.         if HandleRestart = 0 then
  251.             dButton = DoMsgBox( STR_SYSMESSAGE, szMsgCaption$, MB_OK+MB_TASKMODAL+MB_ICONHAND)
  252.             EndCommonInstall = NAV_EXIT
  253.         else
  254.             EndCommonInstall = NAV_FORWARD
  255.         end if
  256.     case "EXIT" , "CANCEL"         'Return to Windows
  257.         if hDlg = DLG_DONEVIDEO then
  258.             dButton = DoMsgBox( STR_SYSMESSAGE, szMsgCaption$, MB_OK+MB_TASKMODAL+MB_ICONHAND)
  259.             EndCommonInstall = NAV_EXIT
  260.         else
  261.             EndCommonInstall = NAV_FORWARD
  262.         end if
  263.     end select
  264.  
  265.     UIPop 1
  266. End Function
  267.  
  268.  
  269. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  270. Sub Initialise(prodName$, defInstallPath$, msgCaption$) STATIC
  271.     ret% = Ctl3dRegister(HinstFrame())
  272.     ret% = Ctl3dAutoSubClass(HinstFrame())
  273.  
  274.     szMsgCaption$ = msgCaption$
  275.  
  276.     cursor% = ShowWaitCursor()
  277.  
  278.     ClearCopyList
  279.     szWinSysPath = ucase$(GetWindowsSysDir ())
  280.     szWinPath = ucase$(GetWindowsDir ())
  281.     dWinDrive = asc(mid$((szWinPath), 1,1)) - asc("A")+1
  282.     szWinDrive = mid$(szWinPath, 1,1)
  283.  
  284.     szSrcSetupPath = ucase$(GetSymbolValue ("STF_SRCDIR"))
  285.     szSrcBinPath = mid$(szSrcSetupPath, 1, (len(szSrcSetupPath) - len(SOURCE_SETUP_SUBDIR))-1) + SOURCE_BINARIES_SUBDIR
  286.     szDestPath = szWinDrive + ":" + defInstallPath$
  287.  
  288. '+++
  289. '$IFDEF WITH_FULL_SAMPLER
  290.     szFullSampPath = szWinDrive + ":" + "\DKMM\SAMPLER"
  291. '$ENDIF
  292. '---
  293.  
  294.     SetTitle szMsgCaption$
  295.     SetBitmap CUIDLL_FILENAME, IDB_BITMAP
  296.     szCopyright = STR_COPYRIGHT + "     Setup " + STR_VERSION
  297.     SetAbout prodName$, szCopyright
  298.  
  299.     fPreviousMode = SetBeepingMode (1)
  300.     fPreviousMode = SetDecompMode (1)
  301.     fPreviousMode = SetSilentMode (0)
  302.  
  303.     szINFPath = ucase$(GetSymbolValue("STF_SRCINFPATH"))
  304.     if szINFPath = "" then
  305.         szINFPath = ucase$(GetSymbolValue("STF_CWDDIR")) + SETUP_INF_FILENAME
  306.     end if
  307.     ReadInfFile szINFPath
  308.  
  309.     szExpressCustomChoice = "EXPRESS"
  310.     szMinimalInstall = "OFF"
  311. '    szAddPMItem = "ON"
  312.  
  313.     fSystemUpdated = 0
  314.     bInstalledWin32s = 0
  315.  
  316.     ' Set up Application file names
  317.     APPLICATION_INI_FILE = APP_SHORTNAME + ".INI"
  318.     APPLICATION_EXE_FILE = APP_SHORTNAME + ".EXE"
  319.     APPLICATION_PENGE_FILE = APP_SHORTNAME + ".PNG"
  320.  
  321.     RestoreCursor(cursor%)
  322. End Sub
  323.  
  324.  
  325. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  326. Sub DeInitialise() STATIC
  327.     ret% = Ctl3dUnregister(HinstFrame())
  328. End Sub
  329.  
  330.  
  331. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  332. Sub AskQuit() STATIC
  333. begin:
  334.     szButton = UIStartDlg(CUIDLL_FILENAME, DLG_QUIT, "FQuitDlgProc", 0, "")
  335.     select case szButton
  336.     case "REACTIVATE"
  337.         goto begin
  338.     case "EXIT" , "CANCEL"
  339.         error STFQUIT
  340.     case "CONTINUE"
  341.         UIPop 1
  342.     end select
  343. End Sub
  344.  
  345.  
  346. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  347. Sub BadPath() STATIC
  348. begin:
  349.     szButton = UIStartDlg(CUIDLL_FILENAME, DLG_BADPATH, "FInfo0DlgProc", 0, "")
  350.     select case szButton
  351.     case "REACTIVATE"
  352.         goto begin
  353.     end select
  354.     UIPop 1
  355. End Sub
  356.  
  357.  
  358.  
  359. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  360. Sub NetworkDrive() STATIC
  361. begin:
  362.     szButton = UIStartDlg(CUIDLL_FILENAME, DLG_NETWORKDRIVE, "FInfo0DlgProc", 0, "")
  363.     select case szButton
  364.     case "REACTIVATE"
  365.         goto begin
  366.     end select
  367.     UIPop 1
  368. End Sub
  369.  
  370. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  371. Function LicenseAgreement() STATIC As Integer
  372. begin:
  373.     szButton = UIStartDlg( CUIDLL_FILENAME, DLG_LICENSE, "FInfoDlgProc", 0, "" )
  374.     select case szButton
  375.     case "CONTINUE"
  376.         UIPop 1
  377.         LicenseAgreement = NAV_FORWARD
  378.     case "EXIT" , "CANCEL"
  379.         LicenseAgreement = NAV_EXIT
  380.     end select
  381. End Function
  382.  
  383. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  384. Function Welcome() STATIC As Integer
  385. begin:
  386.     szButton = UIStartDlg(CUIDLL_FILENAME, DLG_WELCOME, "FInfoDlgProc", DLG_WELHELP, PROC_HELP)
  387.     select case szButton
  388.     case "REACTIVATE"
  389.         goto begin
  390.     case "CONTINUE"
  391.         UIPop 1
  392.         Welcome = NAV_FORWARD
  393.     case "EXIT" , "CANCEL"
  394.         AskQuit
  395.         goto begin
  396.     end select
  397. End Function
  398.  
  399. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  400. Function TestSystem() STATIC As Integer
  401.  
  402. TestNortonAntiVirus:
  403.     szWinString$ = GetIniKeyString( "win.ini", "windows", "load")
  404.     ret% = instr( szWinString,"NAV\navtsrw.exe" )
  405.     if ret% <> 0  then
  406.         dButton = DoMsgBox(STR_NAV, szMsgCaption$, MB_OK)
  407.     endif
  408.  
  409. TestWinVer:
  410.     if GetWindowsMajorVersion() < 3 or (GetWindowsMajorVersion() = 3 and GetWindowsMinorVersion() < 10) then
  411.         TestWinVerDlgLoop:
  412.             szButton = UIStartDlg (CUIDLL_FILENAME, DLG_NEED31, "FInfoDlgProc", DLG_AWFULMACHINE, PROC_HELP)
  413.             select case szButton
  414.             case "EXIT" , "CANCEL"
  415.                 goto TestWinVerDlgLoop
  416.             end select
  417.     end if
  418.  
  419. TestVGA:
  420.     if GetScreenWidth () < 640 or GetScreenHeight () < 480 then
  421.         TestVGADlgLoop:
  422.             szButton = UIStartDlg (CUIDLL_FILENAME, DLG_BADVGA, "FInfoDlgProc", DLG_AWFULMACHINE, PROC_HELP)
  423.             select case szButton
  424.             case "REACTIVATE"
  425.                 goto TestVGADlgLoop
  426.             case "BACK"
  427.                 UIPop 1
  428.                 TestSystem = NAV_BACK
  429.                 goto back
  430.             case "CONTINUE"
  431.                 TestSystem = NAV_FORWARD
  432.                 UIPop 1
  433.                 goto TestMouse
  434.             case "EXIT" , "CANCEL"
  435.                 AskQuit
  436.                 goto TestVGADlgLoop
  437.             end select
  438.         end if
  439.  
  440. TestMouse:
  441.     if HasMouseInstalled() = false then
  442.     TestMouseDlgLoop:
  443.         szButton = UIStartDlg (CUIDLL_FILENAME, DLG_NOMOUSE, "FInfoDlgProc", DLG_AWFULMACHINE, PROC_HELP)
  444.         select case szButton
  445.         case "REACTIVATE"
  446.             goto TestMouseDlgLoop
  447.         case "BACK"
  448.             UIPop 1
  449.             TestSystem = NAV_BACK
  450.         case "CONTINUE"
  451.             TestSystem = NAV_FORWARD
  452.             UIPop 1
  453.             goto TestColour
  454.         case "EXIT" , "CANCEL"
  455.             AskQuit
  456.             goto TestMouseDlgLoop
  457.         end select
  458.     end if
  459.  
  460. TestColour:
  461.     if FIs256Colour() = false then
  462.     TestColourDlgLoop:
  463.         szButton = UIStartDlg (CUIDLL_FILENAME, DLG_NOT256, "FInfoDlgProc", DLG_POORMACHINE, PROC_HELP)
  464.         select case szButton
  465.         case "REACTIVATE"
  466.             goto TestColourDlgLoop
  467.         case "BACK"
  468.             UIPop 1
  469.             TestSystem = NAV_BACK
  470.             goto back
  471.         case "CONTINUE"
  472.             UIPop 1
  473.             TestSystem = NAV_FORWARD
  474.         case "EXIT" , "CANCEL"
  475.             AskQuit
  476.             goto TestColourDlgLoop
  477.         end select
  478.     end if
  479.  
  480. back:
  481. End Function
  482.  
  483.  
  484. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  485. '**
  486. '** Purpose:
  487. '**     Appends a file name to the end of a directory path,
  488. '**     inserting a backslash character as needed.
  489. '** Arguments:
  490. '**     szDir$  - full directory path (with optional ending "\")
  491. '**     szFile$ - filename to append to directory
  492. '** Returns:
  493. '**     Resulting fully qualified path name.
  494. '*************************************************************************
  495. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  496.     IF szDir$ = "" THEN
  497.         MakePath = szFile$
  498.     ELSEIF szFile$ = "" THEN
  499.         MakePath = szDir$
  500.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  501.         MakePath = szDir$ + szFile$
  502.     ELSE
  503.         MakePath = szDir$ + "\" + szFile$
  504.     END IF
  505. END FUNCTION
  506.  
  507.  
  508.  
  509. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  510. Function HandleRestart() STATIC AS INTEGER
  511.     ' Check there are system files to install AND check if Windows v3.1 or greater
  512.     if RestartListEmpty = 0 and GetWindowsMajorVersion >= 3 and GetWindowsMajorVersion >= 1 then
  513.         dButton = DoMsgBox(STR_EXIT, szMsgCaption$, MB_OK+MB_TASKMODAL+MB_ICONINFORMATION)
  514.         tryagain:
  515.         if ExitExecRestart = 1 then
  516.             ' Exit failed
  517.             dButton = DoMsgBox(STR_EXITFAIL, szMsgCaption$, MB_OK+MB_TASKMODAL+MB_ICONSTOP)
  518.             goto tryagain
  519.         end if
  520.     end if
  521.  
  522.     HandleRestart = 1
  523.  
  524.     if RestartListEmpty = 1 then ' Empty, but we have to reboot
  525.         dummy% = ExitWindowsExec(MakePath(szDestPath, "_msrstrt.exe"), "")
  526.         if dummy% = 0 then
  527.             HandleRestart = 0
  528.         end if
  529.     end if
  530.  
  531. End Function
  532.  
  533. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  534. 'Sub UpdateProgramManager(prodName$, appExeFile$, appPengeFile$, readmeFile$, readmeStr$, onCDROM%) STATIC
  535. 'Dim szReadmeTitle As String
  536. 'Dim szInf As String
  537. '
  538. '    if onCDROM% = 1 then    'sampler
  539. '        CreateProgmanGroup STR_COMPANYNAME, "", cmoNone
  540. '        ShowProgmanGroup   STR_COMPANYNAME, 1, cmoNone
  541. '        szReadmeTitle = prodName$ + " " + readmeStr$
  542. '
  543. '        szInf = MakePath( mid$(szSrcSetupPath, 1, (len(szSrcSetupPath) - len(SOURCE_SETUP_SUBDIR))-1), appExeFile$)
  544. '        CreateProgmanItem STR_COMPANYNAME, prodName$, szInf, MakePath(szDestPath, "sampler.ico"), cmoOverwrite
  545. ''        CreateProgmanItem STR_COMPANYNAME, szReadmeTitle, "notepad.exe " + MakePath( mid$(szSrcSetupPath, 1, (len(szSrcSetupPath) - len(SOURCE_SETUP_SUBDIR))-1), readmeFile$), "", cmoOverwrite
  546. '    else
  547. '        if szAddPMItem = "ON" then
  548. '            CreateProgmanGroup STR_COMPANYNAME, "", cmoNone
  549. '            ShowProgmanGroup   STR_COMPANYNAME, 1, cmoNone
  550. '            szReadmeTitle = prodName$ + " " + readmeStr$
  551. '            if szMinimalInstall = "ON" then
  552. '                szInf = MakePath(szSrcBinPath, appExeFile$) + " " + MakePath(szSrcBinPath, appPengeFile$)
  553. '                CreateProgmanItem STR_COMPANYNAME, prodName$, szInf, szInf, cmoOverwrite
  554. '                CreateProgmanItem STR_COMPANYNAME, szReadmeTitle, "notepad.exe " + MakePath(szSrcBinPath, readmeFile$), "", cmoOverwrite
  555. '            else
  556. '                szInf = MakePath(szDestPath, appExeFile$) + " " + MakePath(szDestPath, appPengeFile$)
  557. '                CreateProgmanItem STR_COMPANYNAME, prodName$, szInf, szInf, cmoOverwrite
  558. '                CreateProgmanItem STR_COMPANYNAME, szReadmeTitle, "notepad.exe " + MakePath(szDestPath, readmeFile$), "", cmoOverwrite
  559. '            end if
  560. '        end if
  561. '    end if
  562. '
  563. 'End Sub
  564.  
  565.  
  566. ''''''''''''''''''''''''''''''''''''''''''''
  567.  
  568. '' Alternative function for french stowaway
  569. '' Readme icon has shortened name
  570. 'Sub UpdateProgramManagerAlt(prodName$, readmeName$, appExeFile$, appPengeFile$, readmeFile$, readmeStr$, onCDROM%) STATIC
  571. 'Dim szReadmeTitle As String
  572. 'Dim szInf As String
  573. '
  574. '    if onCDROM% = 1 then    'sampler
  575. '        CreateProgmanGroup STR_COMPANYNAME, "", cmoNone
  576. '        ShowProgmanGroup   STR_COMPANYNAME, 1, cmoNone
  577. '        szReadmeTitle = readmeName$ + " " + readmeStr$
  578. '
  579. '        szInf = MakePath( mid$(szSrcSetupPath, 1, (len(szSrcSetupPath) - len(SOURCE_SETUP_SUBDIR))-1), appExeFile$)
  580. '        CreateProgmanItem STR_COMPANYNAME, prodName$, szInf, MakePath(szDestPath, "sampler.ico"), cmoOverwrite
  581. ''        CreateProgmanItem STR_COMPANYNAME, szReadmeTitle, "notepad.exe " + MakePath( mid$(szSrcSetupPath, 1, (len(szSrcSetupPath) - len(SOURCE_SETUP_SUBDIR))-1), readmeFile$), "", cmoOverwrite
  582. '   else
  583. '        if szAddPMItem = "ON" then
  584. '            CreateProgmanGroup STR_COMPANYNAME, "", cmoNone
  585. '            ShowProgmanGroup   STR_COMPANYNAME, 1, cmoNone
  586. '            szReadmeTitle = readmeName$ + " " + readmeStr$
  587. '            if szMinimalInstall = "ON" then
  588. '                szInf = MakePath(szSrcBinPath, appExeFile$) + " " + MakePath(szSrcBinPath, appPengeFile$)
  589. '                CreateProgmanItem STR_COMPANYNAME, prodName$, szInf, szInf, cmoOverwrite
  590. '                CreateProgmanItem STR_COMPANYNAME, szReadmeTitle, "notepad.exe " + MakePath(szSrcBinPath, readmeFile$), "", cmoOverwrite
  591. '            else
  592. '                szInf = MakePath(szDestPath, appExeFile$) + " " + MakePath(szDestPath, appPengeFile$)
  593. '                CreateProgmanItem STR_COMPANYNAME, prodName$, szInf, szInf, cmoOverwrite
  594. '                CreateProgmanItem STR_COMPANYNAME, szReadmeTitle, "notepad.exe " + MakePath(szDestPath, readmeFile$), "", cmoOverwrite
  595. '            end if
  596. '        end if
  597. '    end if
  598. '
  599. 'End Sub
  600.  
  601.  
  602.  
  603. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  604. Function GetDiskSpaceNeeded( drive% ) STATIC As Long
  605. Dim dDummy As Long
  606.  
  607.     cursor% = ShowWaitCursor()
  608.  
  609.     SetSymbolValue "ExtraSpace", ""
  610.     SetSymbolValue "Needed", ""
  611.     SetSymbolValue "Cost", ""
  612.  
  613.     'Drives A - Z
  614.     for i% = 1 to 26
  615.         AddListItem "ExtraSpace", ""
  616.     next i%
  617.  
  618.     ReplaceListItem "ExtraSpace", dWinDrive, str$(MINIMUM_DISK_SPACE)    '2K for the INI file
  619.  
  620.     dDummy = GetCopyListCost("ExtraSpace","Needed","Cost")
  621.  
  622.     GetDiskSpaceNeeded = val(GetListItem ("Needed", drive))
  623.  
  624.     RemoveSymbol "Needed"
  625.     RemoveSymbol "Cost"
  626.     RemoveSymbol "ExtraSpace"
  627.  
  628.     RestoreCursor(cursor%)
  629. End Function
  630.  
  631.  
  632.  
  633. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  634. Sub UpdateIndeoAVIDrivers() STATIC
  635. Dim szWMDriver As String
  636. Dim szACMDriver As String
  637.  
  638.     szWMDriver = GetIniKeyString(MakePath(szWinPath,"system.ini"), "drivers", "WaveMapper")
  639.  
  640.     if not(szWMDriver = "msacm.drv") then
  641.         fSystemUpdated = 1
  642.     end if
  643.  
  644.  
  645.     if VflatdPresent() = 0 then
  646.         CreateSysIniKeyValue szWinPath + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  647.         fSystemUpdated = 1
  648.     end if
  649.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.IV32", "ir32.dll", cmoOverwrite
  650.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.IV31", "ir32.dll", cmoOverwrite
  651.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.RT21", "ir21.dll", cmoOverwrite
  652.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.YVU9", "iyvu9.dll", cmoOverwrite
  653.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  654.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  655.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  656.     CreateIniKeyValue szWinPath + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  657.     CreateIniKeyValue szWinPath + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  658.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  659.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  660.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  661.     CreateIniKeyValue szWinPath + "control.ini", "drivers.desc", "ir21.dll", "Intel Indeo(TM) Video R2.1", cmoOverwrite
  662.     CreateIniKeyValue szWinPath + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  663.     CreateIniKeyValue szWinPath + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  664.     CreateIniKeyValue szWinPath + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  665.  
  666.     szMsacmPriority1 = GetIniKeyString(szWinPath + "MSACM.INI","PRIORITY","PRIORITY1")
  667.     szMsacmPriority2 = GetIniKeyString(szWinPath + "MSACM.INI","PRIORITY","PRIORITY2")
  668.     szMsacmPriority3 = GetIniKeyString(szWinPath + "MSACM.INI","PRIORITY","PRIORITY3")
  669.  
  670.     if mid$( szMsacmPriority1, 1, 1 ) = "0" then
  671.         szMsacmPriority1 = "1" + mid$( szMsacmPriority1, 2, len(szMsacmPriority1)-1 )
  672.         CreateIniKeyValue szWinPath + "msacm.ini", "PRIORITY", "PRIORITY1", szMsacmPriority1, cmoOverwrite
  673.         fSystemUpdated = 1
  674.     endif
  675.  
  676.     if mid$( szMsacmPriority2, 1, 1 ) = "0" then
  677.         szMsacmPriority2 = "1" + mid$( szMsacmPriority2, 2, len(szMsacmPriority2)-1 )
  678.         CreateIniKeyValue szWinPath + "msacm.ini", "PRIORITY", "PRIORITY2", szMsacmPriority2, cmoOverwrite
  679.         fSystemUpdated = 1
  680.     endif
  681.  
  682.     if mid$( szMsacmPriority3, 1, 1 ) = "0" then
  683.         szMsacmPriority3 = "1" + mid$( szMsacmPriority3, 2, len(szMsacmPriority3)-1 )
  684.         CreateIniKeyValue szWinPath + "msacm.ini", "PRIORITY", "PRIORITY3", szMsacmPriority3, cmoOverwrite
  685.         fSystemUpdated = 1
  686.     endif
  687.  
  688. End Sub
  689.  
  690.  
  691. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  692. Sub UpdateWinGDrivers() STATIC
  693. Dim szDest As String
  694. Dim szDest1 As String
  695. Dim szDest2 As String
  696.  
  697.     ' only use DVA on Windows 3.x
  698.     if OnWin3x() = 1 then
  699.         AddSectionFilesToCopyList "dva", szSrcBinPath, szWinSysPath
  700.         if VflatdPresent() = 0 then
  701.             ' Taken out the path in the following device=dva.386 system.ini entry
  702.             CreateSysIniKeyValue szWinPath + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  703.             fSystemUpdated = 1
  704.         end if
  705.     end if
  706.  
  707.     szDest = GetRealWindowsSysDir
  708.     szDest1 = MakePath(szDest,"wing32.dll")
  709.     szDest2 = MakePath(szDest,"wing32.xxx")
  710.     RenameFilePlease szDest1, szDest2
  711.  
  712.     UpdateWinG32 GetRealWindowsSysDir()
  713. End Sub
  714.  
  715. '''''''''''''''''''''''''''''''''''''''''''''''''
  716.  
  717. FUNCTION GetRealWindowsSysDir STATIC AS STRING
  718.     szBuf$ = string$(260, 32)
  719.     cbBuf% = GetRealSystemDir(szBuf$, 260)
  720.     IF cbBuf% = 0 THEN
  721.         ERROR STFERR
  722.     ELSE
  723.         IF cbBuf% > 259 THEN
  724.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  725.             ERROR STFERR
  726.         END IF
  727.         szBuf$ = RTRIM$(szBuf$)
  728.         IF MID$(szBuf$, 1, 1) = "\" THEN
  729.             szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  730.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  731.             szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  732.         END IF
  733.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  734.             szBuf$ = szBuf$ + "\"
  735.         END IF
  736.         GetRealWindowsSysDir = szBuf$
  737.     END IF
  738.  
  739.     szBuf$ = ""
  740. END FUNCTION
  741.  
  742. '''''''''''''''''''''''''''''''''''''''''''''''''
  743.  
  744. SUB UpdateWinG32 (szOrig$) STATIC
  745.     '
  746.     ' Here we check the version ourselves of wing32.dll, since
  747.     ' we can't get version checking for Win32 apps from Win16
  748.     '
  749.     FileNew$ = MakePath(szOrig$, "wing32.dll")
  750.     FileOrig$ = MakePath(szOrig$, "wing32.xxx")
  751.     IF IsWin32FileNewer( FileOrig$, FileNew$ ) THEN
  752.     RemoveFile FileOrig$, cmoForce
  753.     ELSE
  754.         RemoveFile FileNew$, cmoForce       ' get rid of new file
  755.     RenameFilePlease FileOrig$,FileNew$ ' put back old file
  756.     END IF
  757. END SUB
  758.  
  759. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  760. Function UpdateADPCMDrivers() STATIC As Integer
  761. Dim szWMDriver As String
  762. Dim szACMDriver As String
  763. Dim fUpdate As Integer
  764.  
  765.     ' Check WaveMapper driver
  766.     szWMDriver = GetIniKeyString(MakePath(szWinPath,"system.ini"), "drivers", "WaveMapper")
  767.     szACMDriver = GetIniKeyString (MakePath(szWinPath, "system.ini"), "MSACM", "Install")
  768.  
  769.     if not(szWMDriver = "msacm.drv") then
  770.     ' Isn't installed so...
  771.  
  772.         ' If NO ADPCM drivers are installed so...
  773.         if (szWMDriver = "") then
  774.             ' Display a dialog saying "there are no ADPCM drivers on your system..."
  775.             fUpdate = 1
  776.         else
  777.             ' There is a different adpcm driver in there so warn about compatibility
  778.         loop1:
  779.             szButton = UIStartDlg(CUIDLL_FILENAME, DLG_URKADPCM, "FInfoDlgProc", DLG_ADPCMHELP, PROC_HELP)
  780.             select case szButton
  781.             case "REACTIVATE"
  782.                 goto loop1
  783.             case "EXIT" , "CANCEL"
  784.                 AskQuit
  785.                 goto loop1
  786.             case "CONTINUE"     ' YES
  787.                 UpdateADPCMDrivers = NAV_FORWARD
  788.                 UIPop 1
  789.                 fUpdate = 1
  790. '            case "CANCEL"       ' NO
  791. '                UIPop 1
  792. '                fUpdate = 0
  793.             case "BACK"
  794.                 UIPop 1
  795.                 UpdateADPCMDrivers = NAV_BACK
  796.                 goto back
  797.             end select
  798.         end if
  799.  
  800.  
  801.         if fUpdate = 1 then
  802.             CreateIniKeyValue szWinPath + "system.ini", "drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  803.             CreateIniKeyValue szWinPath + "system.ini", "MSACM", "Install", "msadpcm.acm", cmoOverwrite
  804.             CreateIniKeyValue szWinPath + "control.ini", "drivers.desc", "msacm.drv","MS Audio Compression Manager", cmoOverwrite
  805.             CreateIniKeyValue szWinPath + "control.ini", "Userinstallable.drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  806.             CreateIniKeyValue szWinPath + "control.ini", "related.desc", "WaveMapper", "", cmoOverwrite
  807.             fSystemUpdated = 1
  808.         else
  809.         noSysSoftware:
  810.             ' No install warning
  811.             szButton = UIStartDlg(CUIDLL_FILENAME, DLG_NOSYSSOFT, "FInfoDlgProc", 0, "")
  812.             select case szButton
  813.             case "REACTIVATE"
  814.                 goto noSysSoftware
  815.             case "EXIT" , "CANCEL"
  816.                 AskQuit
  817.                 goto noSysSoftware
  818.             case "CONTINUE"
  819.                 UIPop 1
  820.             case "BACK"
  821.                 UIPop 1
  822.                 goto loop1
  823.             end select
  824.         end if
  825.  
  826.     end if
  827. back:
  828. End Function
  829.  
  830. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  831. Function InstallQTW() STATIC As Integer
  832.  
  833. begin:
  834.     szButton = UIStartDlg( CUIDLL_FILENAME, DLG_INSTALLQTW, "FInfoDlgProc", 0, "" )
  835.     select case szButton
  836.     case "REACTIVATE"
  837.         goto begin
  838.     case "CONTINUE" ' Yes Install QTW
  839.         IF (GetWindowsMajorVersion * 100) + GetWindowsMinorVersion > 350 THEN
  840.             ' Install the 32 bit version on Windows 95
  841.             Run ( MakePath( szSrcBinPath, "qt32b42.exe" ) )
  842.         Else
  843.             ' Else Install the 16 bit version
  844.             Run ( MakePath( szSrcBinPath, "qt16b42.exe" ) )
  845.         END IF
  846.  
  847.         UIPop 1
  848.         InstallQTW = NAV_FORWARD
  849.     case "BACK"     ' No Don't Install QTW
  850.         UIPop 1
  851.         InstallQTW = NAV_BACK
  852.     case "EXIT" , "CANCEL"
  853.         AskQuit
  854.         goto begin
  855.     end select
  856.  
  857. End Function
  858.  
  859. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''